home *** CD-ROM | disk | FTP | other *** search
/ Champak 141 / (Vol 141) Oct 17 2011.iso / Games / despereaux-swings.swf / scripts / Box2D / Collision / Shapes / b2CircleShape.as < prev    next >
Encoding:
Text File  |  2011-10-17  |  5.7 KB  |  143 lines

  1. package Box2D.Collision.Shapes
  2. {
  3.    import Box2D.Collision.b2AABB;
  4.    import Box2D.Collision.b2Segment;
  5.    import Box2D.Common.Math.b2Mat22;
  6.    import Box2D.Common.Math.b2Vec2;
  7.    import Box2D.Common.Math.b2XForm;
  8.    import Box2D.Common.b2Settings;
  9.    
  10.    public class b2CircleShape extends b2Shape
  11.    {
  12.        
  13.       
  14.       public var m_radius:Number;
  15.       
  16.       public var m_localPosition:b2Vec2;
  17.       
  18.       public function b2CircleShape(param1:b2ShapeDef)
  19.       {
  20.          var _loc2_:b2CircleDef = null;
  21.          m_localPosition = new b2Vec2();
  22.          super(param1);
  23.          _loc2_ = param1 as b2CircleDef;
  24.          m_type = e_circleShape;
  25.          m_localPosition.SetV(_loc2_.localPosition);
  26.          m_radius = _loc2_.radius;
  27.       }
  28.       
  29.       override public function TestPoint(param1:b2XForm, param2:b2Vec2) : Boolean
  30.       {
  31.          var _loc3_:b2Mat22 = null;
  32.          var _loc4_:Number = NaN;
  33.          var _loc5_:Number = NaN;
  34.          _loc3_ = param1.R;
  35.          _loc4_ = param1.position.x + (_loc3_.col1.x * m_localPosition.x + _loc3_.col2.x * m_localPosition.y);
  36.          _loc5_ = param1.position.y + (_loc3_.col1.y * m_localPosition.x + _loc3_.col2.y * m_localPosition.y);
  37.          _loc4_ = param2.x - _loc4_;
  38.          _loc5_ = param2.y - _loc5_;
  39.          return _loc4_ * _loc4_ + _loc5_ * _loc5_ <= m_radius * m_radius;
  40.       }
  41.       
  42.       public function GetLocalPosition() : b2Vec2
  43.       {
  44.          return m_localPosition;
  45.       }
  46.       
  47.       override public function TestSegment(param1:b2XForm, param2:Array, param3:b2Vec2, param4:b2Segment, param5:Number) : Boolean
  48.       {
  49.          var _loc6_:b2Mat22 = null;
  50.          var _loc7_:Number = NaN;
  51.          var _loc8_:Number = NaN;
  52.          var _loc9_:Number = NaN;
  53.          var _loc10_:Number = NaN;
  54.          var _loc11_:Number = NaN;
  55.          var _loc12_:Number = NaN;
  56.          var _loc13_:Number = NaN;
  57.          var _loc14_:Number = NaN;
  58.          var _loc15_:Number = NaN;
  59.          var _loc16_:Number = NaN;
  60.          var _loc17_:Number = NaN;
  61.          _loc6_ = param1.R;
  62.          _loc7_ = param1.position.x + (_loc6_.col1.x * m_localPosition.x + _loc6_.col2.x * m_localPosition.y);
  63.          _loc8_ = param1.position.x + (_loc6_.col1.y * m_localPosition.x + _loc6_.col2.y * m_localPosition.y);
  64.          _loc9_ = param4.p1.x - _loc7_;
  65.          _loc10_ = param4.p1.y - _loc8_;
  66.          if((_loc11_ = _loc9_ * _loc9_ + _loc10_ * _loc10_ - m_radius * m_radius) < 0)
  67.          {
  68.             return false;
  69.          }
  70.          _loc12_ = param4.p2.x - param4.p1.x;
  71.          _loc13_ = param4.p2.y - param4.p1.y;
  72.          _loc14_ = _loc9_ * _loc12_ + _loc10_ * _loc13_;
  73.          _loc15_ = _loc12_ * _loc12_ + _loc13_ * _loc13_;
  74.          if((_loc16_ = _loc14_ * _loc14_ - _loc15_ * _loc11_) < 0 || _loc15_ < Number.MIN_VALUE)
  75.          {
  76.             return false;
  77.          }
  78.          _loc17_ = -(_loc14_ + Math.sqrt(_loc16_));
  79.          if(0 <= _loc17_ && _loc17_ <= param5 * _loc15_)
  80.          {
  81.             _loc17_ /= _loc15_;
  82.             param2[0] = _loc17_;
  83.             param3.x = _loc9_ + _loc17_ * _loc12_;
  84.             param3.y = _loc10_ + _loc17_ * _loc13_;
  85.             param3.Normalize();
  86.             return true;
  87.          }
  88.          return false;
  89.       }
  90.       
  91.       override public function ComputeMass(param1:b2MassData) : void
  92.       {
  93.          param1.mass = m_density * b2Settings.b2_pi * m_radius * m_radius;
  94.          param1.center.SetV(m_localPosition);
  95.          param1.I = param1.mass * (0.5 * m_radius * m_radius + (m_localPosition.x * m_localPosition.x + m_localPosition.y * m_localPosition.y));
  96.       }
  97.       
  98.       override public function ComputeSweptAABB(param1:b2AABB, param2:b2XForm, param3:b2XForm) : void
  99.       {
  100.          var _loc4_:b2Mat22 = null;
  101.          var _loc5_:Number = NaN;
  102.          var _loc6_:Number = NaN;
  103.          var _loc7_:Number = NaN;
  104.          var _loc8_:Number = NaN;
  105.          _loc4_ = param2.R;
  106.          _loc5_ = param2.position.x + (_loc4_.col1.x * m_localPosition.x + _loc4_.col2.x * m_localPosition.y);
  107.          _loc6_ = param2.position.y + (_loc4_.col1.y * m_localPosition.x + _loc4_.col2.y * m_localPosition.y);
  108.          _loc4_ = param3.R;
  109.          _loc7_ = param3.position.x + (_loc4_.col1.x * m_localPosition.x + _loc4_.col2.x * m_localPosition.y);
  110.          _loc8_ = param3.position.y + (_loc4_.col1.y * m_localPosition.x + _loc4_.col2.y * m_localPosition.y);
  111.          param1.lowerBound.Set((_loc5_ < _loc7_ ? _loc5_ : _loc7_) - m_radius,(_loc6_ < _loc8_ ? _loc6_ : _loc8_) - m_radius);
  112.          param1.upperBound.Set((_loc5_ > _loc7_ ? _loc5_ : _loc7_) + m_radius,(_loc6_ > _loc8_ ? _loc6_ : _loc8_) + m_radius);
  113.       }
  114.       
  115.       public function GetRadius() : Number
  116.       {
  117.          return m_radius;
  118.       }
  119.       
  120.       override public function UpdateSweepRadius(param1:b2Vec2) : void
  121.       {
  122.          var _loc2_:Number = NaN;
  123.          var _loc3_:Number = NaN;
  124.          _loc2_ = m_localPosition.x - param1.x;
  125.          _loc3_ = m_localPosition.y - param1.y;
  126.          _loc2_ = Math.sqrt(_loc2_ * _loc2_ + _loc3_ * _loc3_);
  127.          m_sweepRadius = _loc2_ + m_radius - b2Settings.b2_toiSlop;
  128.       }
  129.       
  130.       override public function ComputeAABB(param1:b2AABB, param2:b2XForm) : void
  131.       {
  132.          var _loc3_:b2Mat22 = null;
  133.          var _loc4_:Number = NaN;
  134.          var _loc5_:Number = NaN;
  135.          _loc3_ = param2.R;
  136.          _loc4_ = param2.position.x + (_loc3_.col1.x * m_localPosition.x + _loc3_.col2.x * m_localPosition.y);
  137.          _loc5_ = param2.position.y + (_loc3_.col1.y * m_localPosition.x + _loc3_.col2.y * m_localPosition.y);
  138.          param1.lowerBound.Set(_loc4_ - m_radius,_loc5_ - m_radius);
  139.          param1.upperBound.Set(_loc4_ + m_radius,_loc5_ + m_radius);
  140.       }
  141.    }
  142. }
  143.